package com.hua.designpattern.behavioral.state;

/**
 * 
 * @author joshua
 *
 *         <pre>
 *
 *  状态模式（State Pattern）中，类的行为是基于它的状态改变的(对象看起来好像修改了它的类)。
 *  在状态模式中，我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象(条件、分支语句的代替者)。
 *      
 *	优点： 
 *		1、封装了转换规则。 
 *		2、允许状态转换逻辑与状态对象合成一体，而不是某一个巨大的条件语句块(减少大量的条件判断,有很好的扩展性)。 
 *	缺点： 
 *		1、状态模式的使用必然会增加系统类和对象的个数。
 *		2、状态模式对"开闭原则"的支持并不太好，对于可以切换状态的状态模式，增加新的状态类需要修改那些负责状态转换的源代码，否则无法切换到新增状态，而且修改某个状态类的行为也需修改对应类的源代码。
 *
 *
 *         </pre>
 *
 */
public class TestState {

	public static void main(String[] args) {
		Context context = new Context();

		StateInterface stateStart = new StateStart();
		stateStart.doAction(context);

		StateInterface stateStop = new StateStop();
		stateStop.doAction(context);

	}

}
